<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    /*
双指针，指针 i 和 j，循环体定为扫描typed。
如果字符相同，双指针都移动一位。
如果不一样，name[i - 1]存在，但typed[j] == name[i - 1]，说明当前typed[j]是长按出
来的，它右边可能也是长按出来的，指针 j 移动一位，指针 i 不动，继续考察。
如果不一样，且typed[j] != name[i - 1]或name[i - 1]就不存在，说明当前typed[j]键入错误，返回 false
  */
    const isLongPressedName = (name, typed) => {
      let i = 0;
      for (let j = 0; j < typed.length; j++) {
        if (i < name.length && name[i] == typed[j]) { // i 和 j 都步进1
          i++;
        } else if (i - 1 >= 0 && typed[j] == name[i - 1]) { // i - 1 >= 0代表name[i - 1]存在
          // 当前typed[j]是长按出来的，它右边可能还有长按出来的，只是j++
        } else { // name[i - 1]不存在，或 typed[j] != name[i - 1]，键入错误，直接返回false
          return false;
        }
      }
      if (i > name.length - 1) { // 遍历结束，如果i越界了，说明i的字符也考察完了，返回true
        return true;
      }
      return false; // i 没越界，说明还有别的字符未匹配，返回false
    };
    console.log(isLongPressedName(name = "alex", typed = "aaleex"))
  </script>
</body>

</html>